﻿using System;
using System.Collections.Generic;
using Microsoft.Office.Interop.Excel;
using System.Drawing;
using System.Reflection;
using System.Windows;

namespace SimulacionExcelIne
{
    static public class EstandarizacionHojaExcel
    {    
        static public void EliminarCeldasBasura(_Worksheet hojaEntrada)
        {
            //Remplazamos las celdas con espacios " " y las vaciamos
            hojaEntrada.Cells.Replace(" ", "", XlLookAt.xlPart, XlSearchOrder.xlByRows,false,false,false,false);    
            //Eliminamos las celdas en blanco, quedando el documento estandarizado
            try
            {   
                //Eliminar todas las columnas en blanco y mover a la izquierda
                hojaEntrada.Range["A1",hojaEntrada.UsedRange].SpecialCells(XlCellType.xlCellTypeBlanks).Delete(XlDirection.xlToLeft);
                //Eliminar todas las filas en blanco y mover 
                hojaEntrada.Range["A1", hojaEntrada.UsedRange].SpecialCells(XlCellType.xlCellTypeBlanks).Delete(XlDirection.xlUp);
            }
            catch
            {
            }
        }

        internal static void FormatearBordesDatosIniciales(Worksheet hojaEntrada)
        {
            try
            {
                hojaEntrada.UsedRange.SpecialCells(XlCellType.xlCellTypeConstants,2).BorderAround(XlLineStyle.xlContinuous, XlBorderWeight.xlMedium, XlColorIndex.xlColorIndexAutomatic, XlColorIndex.xlColorIndexAutomatic);
                hojaEntrada.UsedRange.SpecialCells(XlCellType.xlCellTypeConstants,1).BorderAround(XlLineStyle.xlContinuous, XlBorderWeight.xlMedium, XlColorIndex.xlColorIndexAutomatic, XlColorIndex.xlColorIndexAutomatic);
                hojaEntrada.UsedRange.SpecialCells(XlCellType.xlCellTypeConstants, 2).Interior.ColorIndex=24;
                hojaEntrada.UsedRange.SpecialCells(XlCellType.xlCellTypeConstants,1).Interior.ColorIndex = 39;
                hojaEntrada.UsedRange.SpecialCells(XlCellType.xlCellTypeConstants,1).NumberFormat="0,000";

                //Falta estandarizar la fuente de los datos!!
                hojaEntrada.UsedRange.Font.Name = "Times New Roman";
                hojaEntrada.UsedRange.Font.Size = 10;
                hojaEntrada.Columns.AutoFit();
            }
            catch
            { 
                
            }


        }

        internal static void PintarAleatorios(Worksheet hojaEntrada)
        {
            Range primeraFila = hojaEntrada.get_Range("B1", "B1");
            
            try
            {
                hojaEntrada.get_Range(primeraFila, primeraFila.End[XlDirection.xlToRight]).Delete(XlDirection.xlToRight);
            }
            catch { }
            //Limpiamos las hojas de posibles valores en la primera columna
            Range Titulo = hojaEntrada.Range["B1", "D1"];
            hojaEntrada.Range["B2", hojaEntrada.UsedRange.End[XlDirection.xlDown].Address.Replace("A", "D")].Interior.ColorIndex = 27;
            Titulo.HorizontalAlignment = Constants.xlCenter;
            Titulo.VerticalAlignment = Constants.xlBottom;
            Titulo.WrapText = false;
            Titulo.Orientation = 0;
            Titulo.AddIndent = false;
            Titulo.IndentLevel = 0;
            Titulo.ShrinkToFit = false;
            Titulo.ReadingOrder = (int)Constants.xlContext;
            Titulo.MergeCells = false;

            Titulo.ClearFormats();
            Titulo.Merge();
            Titulo.FormulaR1C1 = "Distribución uniforme de cero a uno";
        }

        internal static void OcultarNumerosAleatorios(Worksheet HojaEntrada)
        {
            HojaEntrada.Range["B1", "II1"].EntireColumn.Hidden= true;            
        }
    }
}
